//
//  BaseView.swift
//  WatermarkCamera
//
//  Created by AxcLogo on 4/7/2024.
//

import UIKit
import Foundation
import AxcBedrock

class BaseView: BBaseView {
    required convenience init() {
        self.init(frame: .zero)
    }

    override init(frame: CGRect) {
        super.init(frame: frame)

        backgroundColor = .white

        config()

        createUI()
        
        Self.instanceFactory()

        bindReverseAction() // 反向数据流绑定

        bindForwardAction() // 正向数据流绑定
    }

    @available(*, unavailable)
    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }

    deinit {
        print("View释放\(self)")
    }

    // Open

    /// 禁用三指键盘撤回
    @available(iOS 13.0, *)
    override var editingInteractionConfiguration: UIEditingInteractionConfiguration {
        return .none
    }

    override func layoutSubviews() {
        super.layoutSubviews()

        layoutSubviewsBlock?()
    }

    /// 布局完成回调
    var layoutSubviewsBlock: AxcBlock.Empty?

    /// 配置数据的地方
    func config() { }
    /// 创建和布局UI的地方
    func createUI() { }

    /// 正向数据流（页面操作的监听）方法放在这里
    func bindForwardAction() { }

    /// 反向数据流（ViewModel的监听）进行数据绑定的放在这里
    func bindReverseAction() { }
}
